Главная Новости

10 несуразностей и секретов JavaScript

Опубликовано: 19.06.2017

JavaScript. Причудливый и все-таки прекрасный язык программирования. Если бы Пабло Пикассо был программистом, то он наверняка бы разработал именно JavaScript. Null является объектом, пустой массив эквивалентен false, а функции перебрасываются словно теннисные мячи.

 

Типы данных и определения

1. null - это объект

Начнем с широко известной странности JavaScript. null является объектом. Сомневаетесь? Ведь данное утверждение противоречит самой сути null . Вот доказательства:


О ЧЕМ НАМ ЛГУТ В СТАЛКЕР ?

alert(typeof null); //Выдаст сообщение 'object'

Несмотря на очевидный факт, nullне является реализацией никакого базового объекта. (Если вы не знали, значения в JavaScript являются реализациями базового объекта. Так, каждое число является реализацией объекта Number, каждый  объект является реализацией объекта Object.) Такое положение возвращает нас обратно к практическому смыслу, потому что если nullявляется отсутствием значения, то он не может быть реализацией какого-либо объекта. Следовательно следующее выражение возвращает false:

alert(null instanceof Object); //Выдаст сообщение 'false'

2. NaN - это число

Считаете факт представления null объектом странным? Попробуйте проверить NaN! Он оказывается числом! Кроме того, NaN не равен самому себе!

alert(typeof NaN); //Выдаст сообщение 'Number' alert(NaN === NaN); //Выдаст сообщение 'false'

В действительности NaN не равен ничему. Единственный способ проверить значение NaN  - функция isNaN().

 

3. Массив без ключей == false

Другая причуда JavaScript:

alert(new Array() == false); //Выдаст сообщение 'true'

Чтобы понять, что происходит,, нужно понимать концепцию истина и ложь . В данном случае имеется некий вид отношений истина/ложь, которая может привести в восторг философа или специалиста по логике.